home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
ai
/
gaf200b
/
example
/
robotarm.evl
< prev
next >
Wrap
Text File
|
1994-06-10
|
5KB
|
173 lines
CONFIGURATION
EVAL_SAMPLE = 3;
GENE_WEIGHT_INC = 2;
MAX_BEST_ITEM = 10; ! range 1 - 100
TEST_TIME = 2.5; ! second
MIN_SCORE = 0.600;
EVAL_NULL_BAND = 0.02;
MAX_RULE = 12;
MAX_CYCLE_RATE = 0.100; ! in second
MIN_CYCLE_RATE = 0.035; ! in second
END_CONFIGURATION;
EVAL_SEGMENT Evaluation
Cycle_time 0.05
! Name MIN MAX
IN Pos_error (-70.0, 70.0)
IN Current (-1.0, 1.0)
OUT Eval_result (0, 1)
OUT Reference(0, 70);
!OUT Position (0, 70);
Local Done (0, 1)
Local Rising_time (0, 3)
Local Err_oscilate (0, 10)
Local Cur_oscilate (0, 10)
Local err (0, 70)
Local cur (0, 1)
Local Err_dir (-1, 1)
Local Old_err_dir (-1, 1)
Local Cur_dir (-1, 1)
Local Old_cur_dir (-1, 1)
! Name Below Low High Above Truth
Symbol Very_good OF Rising_time ( 0.0, 0.0, 1.0, 2.0, 1.0)
Symbol Good OF Rising_time ( 1.0, 2.0, 2.0, 3.0, 1.0)
Symbol OK OF Rising_time ( 2.0, 3.0, 3.0, 4.0, 1.0)
Symbol Bad OF Rising_time ( 3.0, 4.0, 4.0, 5.0, 1.0)
Symbol Very_bad OF Rising_time ( 4.0, 5.0, 10.0, 10.0, 1.0)
Symbol Under_shoot OF Pos_error (-70.0, -70.0, -2.0, -1.0, 1.0)
Symbol Neg_small OF Pos_error ( -2.0, -1.0, -1.0, 0.0, 1.0)
Symbol On_target OF Pos_error ( -1.0, 0.0, 0.0, 1.0, 1.0)
Symbol Pos_small OF Pos_error ( 0.0, 1.0, 1.0, 2.0, 1.0)
Symbol Over_shoot OF Pos_error ( 1.0, 2.0, 70.0, 70.0, 1.0)
Symbol Very_good OF Eval_result ( 0.7, 0.8, 1.0, 1.0, 1.0, 1.0)
Symbol Good OF Eval_result ( 0.5, 0.7, 0.8, 1.0, 1.0)
Symbol Mid OF Eval_result ( 0.2, 0.4, 0.6, 0.8, 1.0)
Symbol Bad OF Eval_result ( 0.1, 0.2, 0.3, 0.4, 1.0)
Symbol Very_bad OF Eval_result ( 0.0, 0.0, 0.1, 0.2, 1.0, 0.0)
Symbol No_oscil ( 0, 0, 1, 1, 1.0)
Symbol Few_oscil ( 1, 2, 3, 4, 1.0)
Symbol Mid_oscil ( 2, 3, 4, 5, 1.0)
Symbol Lot_oscil ( 3, 4, 5, 6, 1.0)
Symbol Unstable ( 4, 5, 10, 10, 1.0)
Initialization
Rising_time = 0;
Err_Oscilate = 0;
Cur_Oscilate = 0;
Eval_result = 0;
Done = 0;
Old_err_dir = 0;
Old_cur_dir = 0;
Reference = 35;
BEGIN
err = pos_error;
IF pos_error < 0 THEN
err = - pos_error;
ENDIF;
IF Done = 0 THEN
IF err > 2 THEN
Rising_time = Rising_time + Delta_time;
ELSE
Done = 1;
ENDIF;
ENDIF;
IF Pos_error = 0 THEN
Err_dir = 0;
ELSE
IF Pos_error > 0 THEN
Err_dir = 1;
ELSE
Err_dir = -1;
ENDIF;
ENDIF;
IF Old_err_dir <> 0 THEN
IF Err_dir <> Old_err_dir THEN
IF err > 0.5 THEN
Err_Oscilate = Err_Oscilate + 1;
ENDIF;
ENDIF;
ENDIF;
Old_err_dir = Err_dir;
cur = current;
IF current < 0 THEN
cur = - current;
ENDIF;
IF current = 0 THEN
cur_dir = 0;
ELSE
IF current > 0 THEN
cur_dir = 1;
ELSE
cur_dir = -1;
ENDIF;
ENDIF;
IF Old_cur_dir <> 0 THEN
IF cur_dir <> Old_cur_dir THEN
IF cur > 0.25 THEN
cur_Oscilate = cur_Oscilate + 1;
ENDIF;
ENDIF;
ENDIF;
Old_cur_dir = cur_dir;
END;
IF Pos_error IS Under_shoot
THEN Eval_result IS Very_bad
IF Pos_error IS Neg_small
THEN Eval_result IS Bad
IF Pos_error IS On_target
THEN Eval_result IS Very_good
IF Pos_error IS Pos_small
THEN Eval_result IS Mid
IF Pos_error IS Over_shoot
THEN Eval_result IS Very_bad
!---------------------------
IF Rising_time IS Very_good
THEN Eval_result IS Very_good
IF Rising_time IS Good
THEN Eval_result IS Good
IF Rising_time IS OK
THEN Eval_result IS Mid
IF Rising_time IS Bad
THEN Eval_result IS Very_bad
IF Rising_time IS Very_bad
THEN Eval_result IS Very_bad
!---------------------------
IF Err_Oscilate IS No_oscil !AND Cur_Oscilate IS No_oscil
THEN Eval_result IS Very_good
IF Err_Oscilate IS Few_oscil !AND Cur_Oscilate IS Few_oscil
THEN Eval_result IS Good
IF Err_Oscilate IS Mid_oscil !AND Cur_Oscilate IS Mid
THEN Eval_result IS Mid
IF Err_Oscilate IS Lot_oscil OR Cur_Oscilate IS Lot_oscil
THEN Eval_result IS Bad
IF Err_Oscilate IS Unstable OR Cur_Oscilate IS Unstable
THEN Eval_result IS Very_bad
END Evaluation;